# Generated from HogQLLexer.g4 by ANTLR 4.13.2
from antlr4 import *
from io import StringIO
import sys
if sys.version_info[1] > 5:
    from typing import TextIO
else:
    from typing.io import TextIO



# put any global imports you need here
import sys



def serializedATN():
    return [
        4,0,168,1626,6,-1,6,-1,6,-1,6,-1,6,-1,6,-1,2,0,7,0,2,1,7,1,2,2,7,
        2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,
        10,2,11,7,11,2,12,7,12,2,13,7,13,2,14,7,14,2,15,7,15,2,16,7,16,2,
        17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,2,21,7,21,2,22,7,22,2,23,7,
        23,2,24,7,24,2,25,7,25,2,26,7,26,2,27,7,27,2,28,7,28,2,29,7,29,2,
        30,7,30,2,31,7,31,2,32,7,32,2,33,7,33,2,34,7,34,2,35,7,35,2,36,7,
        36,2,37,7,37,2,38,7,38,2,39,7,39,2,40,7,40,2,41,7,41,2,42,7,42,2,
        43,7,43,2,44,7,44,2,45,7,45,2,46,7,46,2,47,7,47,2,48,7,48,2,49,7,
        49,2,50,7,50,2,51,7,51,2,52,7,52,2,53,7,53,2,54,7,54,2,55,7,55,2,
        56,7,56,2,57,7,57,2,58,7,58,2,59,7,59,2,60,7,60,2,61,7,61,2,62,7,
        62,2,63,7,63,2,64,7,64,2,65,7,65,2,66,7,66,2,67,7,67,2,68,7,68,2,
        69,7,69,2,70,7,70,2,71,7,71,2,72,7,72,2,73,7,73,2,74,7,74,2,75,7,
        75,2,76,7,76,2,77,7,77,2,78,7,78,2,79,7,79,2,80,7,80,2,81,7,81,2,
        82,7,82,2,83,7,83,2,84,7,84,2,85,7,85,2,86,7,86,2,87,7,87,2,88,7,
        88,2,89,7,89,2,90,7,90,2,91,7,91,2,92,7,92,2,93,7,93,2,94,7,94,2,
        95,7,95,2,96,7,96,2,97,7,97,2,98,7,98,2,99,7,99,2,100,7,100,2,101,
        7,101,2,102,7,102,2,103,7,103,2,104,7,104,2,105,7,105,2,106,7,106,
        2,107,7,107,2,108,7,108,2,109,7,109,2,110,7,110,2,111,7,111,2,112,
        7,112,2,113,7,113,2,114,7,114,2,115,7,115,2,116,7,116,2,117,7,117,
        2,118,7,118,2,119,7,119,2,120,7,120,2,121,7,121,2,122,7,122,2,123,
        7,123,2,124,7,124,2,125,7,125,2,126,7,126,2,127,7,127,2,128,7,128,
        2,129,7,129,2,130,7,130,2,131,7,131,2,132,7,132,2,133,7,133,2,134,
        7,134,2,135,7,135,2,136,7,136,2,137,7,137,2,138,7,138,2,139,7,139,
        2,140,7,140,2,141,7,141,2,142,7,142,2,143,7,143,2,144,7,144,2,145,
        7,145,2,146,7,146,2,147,7,147,2,148,7,148,2,149,7,149,2,150,7,150,
        2,151,7,151,2,152,7,152,2,153,7,153,2,154,7,154,2,155,7,155,2,156,
        7,156,2,157,7,157,2,158,7,158,2,159,7,159,2,160,7,160,2,161,7,161,
        2,162,7,162,2,163,7,163,2,164,7,164,2,165,7,165,2,166,7,166,2,167,
        7,167,2,168,7,168,2,169,7,169,2,170,7,170,2,171,7,171,2,172,7,172,
        2,173,7,173,2,174,7,174,2,175,7,175,2,176,7,176,2,177,7,177,2,178,
        7,178,2,179,7,179,2,180,7,180,2,181,7,181,2,182,7,182,2,183,7,183,
        2,184,7,184,2,185,7,185,2,186,7,186,2,187,7,187,2,188,7,188,2,189,
        7,189,2,190,7,190,2,191,7,191,2,192,7,192,2,193,7,193,2,194,7,194,
        2,195,7,195,2,196,7,196,2,197,7,197,2,198,7,198,2,199,7,199,2,200,
        7,200,2,201,7,201,2,202,7,202,2,203,7,203,2,204,7,204,2,205,7,205,
        2,206,7,206,2,207,7,207,2,208,7,208,2,209,7,209,2,210,7,210,2,211,
        7,211,1,0,1,0,1,0,1,0,1,1,1,1,1,1,1,1,1,2,1,2,1,2,1,2,1,2,1,3,1,
        3,1,3,1,3,1,4,1,4,1,4,1,4,1,4,1,4,1,5,1,5,1,5,1,6,1,6,1,6,1,6,1,
        6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,3,6,471,8,6,1,7,1,7,1,7,1,
        7,1,7,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,9,1,9,1,9,1,9,1,9,1,10,1,
        10,1,10,1,11,1,11,1,11,1,11,1,11,1,12,1,12,1,12,1,12,1,12,1,13,1,
        13,1,13,1,13,1,13,1,13,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,15,1,
        15,1,15,1,15,1,15,1,15,1,15,1,15,1,16,1,16,1,16,1,16,1,16,1,16,1,
        17,1,17,1,17,1,17,1,17,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,
        19,1,19,1,19,1,19,1,19,1,20,1,20,1,20,1,20,1,21,1,21,1,21,1,21,1,
        21,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,23,1,
        23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,24,1,24,1,24,1,24,1,24,1,
        25,1,25,1,25,1,25,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,27,1,27,1,
        27,1,27,1,27,1,27,1,27,1,27,1,28,1,28,1,28,1,28,1,28,1,28,1,29,1,
        29,1,29,1,29,1,29,1,29,1,29,1,29,1,30,1,30,1,30,1,30,1,30,1,30,1,
        31,1,31,1,31,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,
        33,1,33,1,33,1,33,1,34,1,34,1,34,1,34,1,34,1,35,1,35,1,35,1,35,1,
        35,1,36,1,36,1,36,1,36,1,37,1,37,1,37,1,37,1,37,1,37,1,38,1,38,1,
        38,1,38,1,38,1,38,1,38,1,39,1,39,1,39,1,39,1,39,1,40,1,40,1,40,1,
        41,1,41,1,41,1,42,1,42,1,42,1,42,1,42,1,42,1,43,1,43,1,43,1,44,1,
        44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,3,44,699,
        8,44,1,45,1,45,1,45,1,45,1,45,1,45,1,46,1,46,1,46,1,46,1,46,1,46,
        1,46,1,46,1,46,1,46,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,
        1,48,1,48,1,48,1,49,1,49,1,49,1,49,1,49,1,50,1,50,1,50,1,50,1,51,
        1,51,1,51,1,51,1,51,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,53,
        1,53,1,53,1,53,1,53,1,54,1,54,1,54,1,54,1,55,1,55,1,55,1,55,1,55,
        1,56,1,56,1,56,1,56,1,56,1,56,1,57,1,57,1,57,1,57,1,57,1,57,1,57,
        1,58,1,58,1,58,1,58,1,58,1,58,1,59,1,59,1,59,1,59,1,60,1,60,1,60,
        1,60,1,61,1,61,1,61,1,61,1,61,1,62,1,62,1,62,1,62,1,62,1,62,1,63,
        1,63,1,63,1,63,1,63,1,63,1,63,1,64,1,64,1,64,1,65,1,65,1,65,1,66,
        1,66,1,66,1,66,1,66,1,66,1,67,1,67,1,67,1,67,1,67,1,67,1,68,1,68,
        1,68,1,68,1,68,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,
        1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,71,1,71,1,71,
        1,71,1,71,1,71,1,71,1,71,1,71,1,72,1,72,1,72,1,72,1,72,1,72,1,72,
        1,72,1,73,1,73,1,73,1,73,1,73,1,73,1,74,1,74,1,74,1,74,1,74,1,74,
        1,74,1,75,1,75,1,75,1,75,1,75,1,75,1,76,1,76,1,76,1,76,1,76,1,76,
        1,76,1,77,1,77,1,77,1,77,1,78,1,78,1,78,1,78,1,78,1,79,1,79,1,79,
        1,79,1,79,1,79,1,79,1,80,1,80,1,80,1,80,1,80,1,80,1,80,1,81,1,81,
        1,81,1,81,1,81,1,81,1,81,1,82,1,82,1,82,1,82,1,82,1,83,1,83,1,83,
        1,83,1,83,1,83,1,83,1,83,1,83,1,84,1,84,1,84,1,84,1,84,1,84,1,84,
        1,84,1,84,1,84,1,85,1,85,1,85,1,85,1,85,1,86,1,86,1,86,1,86,1,86,
        1,86,1,87,1,87,1,87,1,87,1,87,1,88,1,88,1,88,1,88,1,88,1,88,1,88,
        1,88,1,88,1,88,1,89,1,89,1,89,1,90,1,90,1,90,1,90,1,91,1,91,1,91,
        1,91,1,91,1,91,1,91,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,
        1,93,1,93,1,93,1,93,1,93,1,94,1,94,1,94,1,94,1,94,1,94,1,94,1,94,
        1,94,1,95,1,95,1,95,1,95,1,96,1,96,1,96,1,96,1,96,1,96,1,96,1,96,
        1,96,1,96,1,97,1,97,1,97,1,97,1,97,1,97,1,98,1,98,1,98,1,98,1,98,
        1,98,1,99,1,99,1,99,1,99,1,99,1,100,1,100,1,100,1,100,1,100,1,101,
        1,101,1,101,1,101,1,101,1,101,1,102,1,102,1,102,1,102,1,102,1,102,
        1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,104,1,104,1,104,1,104,
        1,104,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,
        3,105,1083,8,105,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,
        1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,
        1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,3,106,1112,8,106,
        1,107,1,107,1,107,3,107,1117,8,107,1,107,1,107,1,107,1,107,5,107,
        1123,8,107,10,107,12,107,1126,9,107,1,107,1,107,1,107,1,107,1,107,
        1,107,1,107,1,107,1,107,5,107,1137,8,107,10,107,12,107,1140,9,107,
        1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107,
        5,107,1153,8,107,10,107,12,107,1156,9,107,1,107,1,107,3,107,1160,
        8,107,1,108,1,108,1,108,5,108,1165,8,108,10,108,12,108,1168,9,108,
        1,108,1,108,3,108,1172,8,108,1,108,1,108,3,108,1176,8,108,1,108,
        4,108,1179,8,108,11,108,12,108,1180,1,108,1,108,1,108,3,108,1186,
        8,108,1,108,1,108,3,108,1190,8,108,1,108,4,108,1193,8,108,11,108,
        12,108,1194,1,108,1,108,1,108,5,108,1200,8,108,10,108,12,108,1203,
        9,108,1,108,1,108,1,108,3,108,1208,8,108,1,108,4,108,1211,8,108,
        11,108,12,108,1212,1,108,1,108,1,108,1,108,1,108,3,108,1220,8,108,
        1,108,4,108,1223,8,108,11,108,12,108,1224,1,108,1,108,1,108,1,108,
        3,108,1231,8,108,1,108,4,108,1234,8,108,11,108,12,108,1235,3,108,
        1238,8,108,1,109,1,109,4,109,1242,8,109,11,109,12,109,1243,1,110,
        4,110,1247,8,110,11,110,12,110,1248,1,111,1,111,1,111,4,111,1254,
        8,111,11,111,12,111,1255,1,112,1,112,1,112,1,112,1,112,1,112,1,112,
        1,112,1,112,5,112,1267,8,112,10,112,12,112,1270,9,112,1,112,1,112,
        1,113,1,113,1,114,1,114,1,115,1,115,1,116,1,116,1,117,1,117,1,118,
        1,118,1,119,1,119,1,120,1,120,1,121,1,121,1,122,1,122,1,123,1,123,
        1,124,1,124,1,125,1,125,1,126,1,126,1,127,1,127,1,128,1,128,1,129,
        1,129,1,130,1,130,1,131,1,131,1,132,1,132,1,133,1,133,1,134,1,134,
        1,135,1,135,1,136,1,136,1,137,1,137,1,138,1,138,1,139,1,139,1,140,
        1,140,1,141,1,141,1,142,1,142,1,143,1,143,1,143,1,144,1,144,1,145,
        1,145,1,146,1,146,1,147,1,147,1,148,1,148,1,149,1,149,1,149,1,150,
        1,150,1,151,1,151,1,152,1,152,1,153,1,153,1,153,1,154,1,154,1,155,
        1,155,1,155,1,156,1,156,1,157,1,157,1,158,1,158,1,158,1,159,1,159,
        1,159,1,159,1,160,1,160,1,160,1,160,1,161,1,161,1,162,1,162,1,163,
        1,163,1,163,1,164,1,164,1,164,1,164,1,164,1,164,1,165,1,165,1,165,
        1,165,1,165,1,165,1,166,1,166,1,167,1,167,1,167,1,168,1,168,1,168,
        1,168,3,168,1407,8,168,1,169,1,169,1,169,1,169,1,170,1,170,1,170,
        1,171,1,171,1,171,1,172,1,172,1,172,1,173,1,173,1,174,1,174,1,175,
        1,175,1,176,1,176,1,177,1,177,1,177,1,177,1,177,1,178,1,178,1,178,
        1,178,1,178,1,179,1,179,1,180,1,180,1,181,1,181,1,181,1,182,1,182,
        1,182,1,182,1,183,1,183,1,184,1,184,1,185,1,185,1,186,1,186,1,187,
        1,187,1,187,1,188,1,188,1,189,1,189,1,189,1,189,5,189,1468,8,189,
        10,189,12,189,1471,9,189,1,189,1,189,1,189,1,189,1,189,1,190,1,190,
        1,190,1,190,3,190,1482,8,190,1,190,5,190,1485,8,190,10,190,12,190,
        1488,9,190,1,190,3,190,1491,8,190,1,190,1,190,1,191,1,191,1,191,
        1,191,1,192,1,192,1,192,1,192,1,192,1,192,1,192,1,192,1,192,1,192,
        1,192,4,192,1510,8,192,11,192,12,192,1511,1,193,1,193,1,193,1,193,
        1,194,1,194,1,194,1,194,1,194,1,195,1,195,1,195,1,195,1,195,4,195,
        1528,8,195,11,195,12,195,1529,1,196,1,196,1,196,1,196,1,197,1,197,
        1,197,1,197,1,197,1,197,1,198,1,198,1,198,1,198,1,198,1,198,1,199,
        1,199,5,199,1550,8,199,10,199,12,199,1553,9,199,1,199,1,199,1,200,
        1,200,1,200,1,200,1,201,1,201,1,201,1,201,1,202,4,202,1566,8,202,
        11,202,12,202,1567,1,202,1,202,1,203,1,203,1,203,1,203,1,203,1,204,
        1,204,1,204,1,204,1,204,1,205,1,205,5,205,1584,8,205,10,205,12,205,
        1587,9,205,1,205,1,205,1,206,4,206,1592,8,206,11,206,12,206,1593,
        1,206,1,206,1,207,4,207,1599,8,207,11,207,12,207,1600,1,208,1,208,
        1,208,1,208,1,208,1,209,1,209,1,209,1,209,1,209,1,209,1,209,1,210,
        1,210,1,210,1,210,1,210,1,211,4,211,1621,8,211,11,211,12,211,1622,
        1,211,1,211,1,1469,0,212,6,1,8,2,10,3,12,4,14,5,16,6,18,7,20,8,22,
        9,24,10,26,11,28,12,30,13,32,14,34,15,36,16,38,17,40,18,42,19,44,
        20,46,21,48,22,50,23,52,24,54,25,56,26,58,27,60,28,62,29,64,30,66,
        31,68,32,70,33,72,34,74,35,76,36,78,37,80,38,82,39,84,40,86,41,88,
        42,90,43,92,44,94,45,96,46,98,47,100,48,102,49,104,50,106,51,108,
        52,110,53,112,54,114,55,116,56,118,57,120,58,122,59,124,60,126,61,
        128,62,130,63,132,64,134,65,136,66,138,67,140,68,142,69,144,70,146,
        71,148,72,150,73,152,74,154,75,156,76,158,77,160,78,162,79,164,80,
        166,81,168,82,170,83,172,84,174,85,176,86,178,87,180,88,182,89,184,
        90,186,91,188,92,190,93,192,94,194,95,196,96,198,97,200,98,202,99,
        204,100,206,101,208,102,210,103,212,104,214,105,216,106,218,107,
        220,108,222,109,224,110,226,111,228,112,230,113,232,0,234,0,236,
        0,238,0,240,0,242,0,244,0,246,0,248,0,250,0,252,0,254,0,256,0,258,
        0,260,0,262,0,264,0,266,0,268,0,270,0,272,0,274,0,276,0,278,0,280,
        0,282,0,284,0,286,0,288,0,290,0,292,114,294,115,296,116,298,117,
        300,118,302,119,304,120,306,121,308,122,310,123,312,124,314,125,
        316,126,318,127,320,128,322,129,324,130,326,131,328,132,330,133,
        332,134,334,0,336,0,338,135,340,136,342,137,344,138,346,139,348,
        140,350,141,352,142,354,143,356,144,358,145,360,146,362,147,364,
        148,366,149,368,150,370,151,372,152,374,153,376,154,378,155,380,
        156,382,157,384,158,386,159,388,160,390,161,392,162,394,0,396,163,
        398,164,400,0,402,0,404,0,406,0,408,0,410,165,412,0,414,0,416,0,
        418,166,420,167,422,0,424,0,426,0,428,168,6,0,1,2,3,4,5,42,2,0,92,
        92,96,96,2,0,34,34,92,92,2,0,39,39,92,92,2,0,65,65,97,97,2,0,66,
        66,98,98,2,0,67,67,99,99,2,0,68,68,100,100,2,0,69,69,101,101,2,0,
        70,70,102,102,2,0,71,71,103,103,2,0,72,72,104,104,2,0,73,73,105,
        105,2,0,74,74,106,106,2,0,75,75,107,107,2,0,76,76,108,108,2,0,77,
        77,109,109,2,0,78,78,110,110,2,0,79,79,111,111,2,0,80,80,112,112,
        2,0,81,81,113,113,2,0,82,82,114,114,2,0,83,83,115,115,2,0,84,84,
        116,116,2,0,85,85,117,117,2,0,86,86,118,118,2,0,87,87,119,119,2,
        0,88,88,120,120,2,0,89,89,121,121,2,0,90,90,122,122,2,0,65,90,97,
        122,1,0,48,55,1,0,48,57,3,0,48,57,65,70,97,102,2,0,10,10,13,13,2,
        1,10,10,13,13,2,0,9,13,32,32,3,0,39,39,92,92,123,123,1,0,123,123,
        3,0,65,90,95,95,97,122,5,0,45,45,48,57,65,90,95,95,97,122,3,0,9,
        10,13,13,32,32,2,0,60,60,123,123,1665,0,6,1,0,0,0,0,8,1,0,0,0,0,
        10,1,0,0,0,0,12,1,0,0,0,0,14,1,0,0,0,0,16,1,0,0,0,0,18,1,0,0,0,0,
        20,1,0,0,0,0,22,1,0,0,0,0,24,1,0,0,0,0,26,1,0,0,0,0,28,1,0,0,0,0,
        30,1,0,0,0,0,32,1,0,0,0,0,34,1,0,0,0,0,36,1,0,0,0,0,38,1,0,0,0,0,
        40,1,0,0,0,0,42,1,0,0,0,0,44,1,0,0,0,0,46,1,0,0,0,0,48,1,0,0,0,0,
        50,1,0,0,0,0,52,1,0,0,0,0,54,1,0,0,0,0,56,1,0,0,0,0,58,1,0,0,0,0,
        60,1,0,0,0,0,62,1,0,0,0,0,64,1,0,0,0,0,66,1,0,0,0,0,68,1,0,0,0,0,
        70,1,0,0,0,0,72,1,0,0,0,0,74,1,0,0,0,0,76,1,0,0,0,0,78,1,0,0,0,0,
        80,1,0,0,0,0,82,1,0,0,0,0,84,1,0,0,0,0,86,1,0,0,0,0,88,1,0,0,0,0,
        90,1,0,0,0,0,92,1,0,0,0,0,94,1,0,0,0,0,96,1,0,0,0,0,98,1,0,0,0,0,
        100,1,0,0,0,0,102,1,0,0,0,0,104,1,0,0,0,0,106,1,0,0,0,0,108,1,0,
        0,0,0,110,1,0,0,0,0,112,1,0,0,0,0,114,1,0,0,0,0,116,1,0,0,0,0,118,
        1,0,0,0,0,120,1,0,0,0,0,122,1,0,0,0,0,124,1,0,0,0,0,126,1,0,0,0,
        0,128,1,0,0,0,0,130,1,0,0,0,0,132,1,0,0,0,0,134,1,0,0,0,0,136,1,
        0,0,0,0,138,1,0,0,0,0,140,1,0,0,0,0,142,1,0,0,0,0,144,1,0,0,0,0,
        146,1,0,0,0,0,148,1,0,0,0,0,150,1,0,0,0,0,152,1,0,0,0,0,154,1,0,
        0,0,0,156,1,0,0,0,0,158,1,0,0,0,0,160,1,0,0,0,0,162,1,0,0,0,0,164,
        1,0,0,0,0,166,1,0,0,0,0,168,1,0,0,0,0,170,1,0,0,0,0,172,1,0,0,0,
        0,174,1,0,0,0,0,176,1,0,0,0,0,178,1,0,0,0,0,180,1,0,0,0,0,182,1,
        0,0,0,0,184,1,0,0,0,0,186,1,0,0,0,0,188,1,0,0,0,0,190,1,0,0,0,0,
        192,1,0,0,0,0,194,1,0,0,0,0,196,1,0,0,0,0,198,1,0,0,0,0,200,1,0,
        0,0,0,202,1,0,0,0,0,204,1,0,0,0,0,206,1,0,0,0,0,208,1,0,0,0,0,210,
        1,0,0,0,0,212,1,0,0,0,0,214,1,0,0,0,0,216,1,0,0,0,0,218,1,0,0,0,
        0,220,1,0,0,0,0,222,1,0,0,0,0,224,1,0,0,0,0,226,1,0,0,0,0,228,1,
        0,0,0,0,230,1,0,0,0,0,292,1,0,0,0,0,294,1,0,0,0,0,296,1,0,0,0,0,
        298,1,0,0,0,0,300,1,0,0,0,0,302,1,0,0,0,0,304,1,0,0,0,0,306,1,0,
        0,0,0,308,1,0,0,0,0,310,1,0,0,0,0,312,1,0,0,0,0,314,1,0,0,0,0,316,
        1,0,0,0,0,318,1,0,0,0,0,320,1,0,0,0,0,322,1,0,0,0,0,324,1,0,0,0,
        0,326,1,0,0,0,0,328,1,0,0,0,0,330,1,0,0,0,0,332,1,0,0,0,0,334,1,
        0,0,0,0,336,1,0,0,0,0,338,1,0,0,0,0,340,1,0,0,0,0,342,1,0,0,0,0,
        344,1,0,0,0,0,346,1,0,0,0,0,348,1,0,0,0,0,350,1,0,0,0,0,352,1,0,
        0,0,0,354,1,0,0,0,0,356,1,0,0,0,0,358,1,0,0,0,0,360,1,0,0,0,0,362,
        1,0,0,0,0,364,1,0,0,0,0,366,1,0,0,0,0,368,1,0,0,0,0,370,1,0,0,0,
        0,372,1,0,0,0,0,374,1,0,0,0,0,376,1,0,0,0,0,378,1,0,0,0,0,380,1,
        0,0,0,0,382,1,0,0,0,0,384,1,0,0,0,0,386,1,0,0,0,0,388,1,0,0,0,1,
        390,1,0,0,0,1,392,1,0,0,0,1,394,1,0,0,0,2,396,1,0,0,0,2,398,1,0,
        0,0,3,400,1,0,0,0,3,402,1,0,0,0,3,404,1,0,0,0,3,406,1,0,0,0,3,408,
        1,0,0,0,3,410,1,0,0,0,3,412,1,0,0,0,4,414,1,0,0,0,4,416,1,0,0,0,
        4,418,1,0,0,0,5,420,1,0,0,0,5,422,1,0,0,0,5,424,1,0,0,0,5,426,1,
        0,0,0,5,428,1,0,0,0,6,430,1,0,0,0,8,434,1,0,0,0,10,438,1,0,0,0,12,
        443,1,0,0,0,14,447,1,0,0,0,16,453,1,0,0,0,18,470,1,0,0,0,20,472,
        1,0,0,0,22,477,1,0,0,0,24,485,1,0,0,0,26,490,1,0,0,0,28,493,1,0,
        0,0,30,498,1,0,0,0,32,503,1,0,0,0,34,509,1,0,0,0,36,516,1,0,0,0,
        38,524,1,0,0,0,40,530,1,0,0,0,42,535,1,0,0,0,44,543,1,0,0,0,46,548,
        1,0,0,0,48,552,1,0,0,0,50,557,1,0,0,0,52,568,1,0,0,0,54,577,1,0,
        0,0,56,582,1,0,0,0,58,586,1,0,0,0,60,593,1,0,0,0,62,601,1,0,0,0,
        64,607,1,0,0,0,66,615,1,0,0,0,68,621,1,0,0,0,70,624,1,0,0,0,72,634,
        1,0,0,0,74,638,1,0,0,0,76,643,1,0,0,0,78,648,1,0,0,0,80,652,1,0,
        0,0,82,658,1,0,0,0,84,665,1,0,0,0,86,670,1,0,0,0,88,673,1,0,0,0,
        90,676,1,0,0,0,92,682,1,0,0,0,94,698,1,0,0,0,96,700,1,0,0,0,98,706,
        1,0,0,0,100,716,1,0,0,0,102,725,1,0,0,0,104,728,1,0,0,0,106,733,
        1,0,0,0,108,737,1,0,0,0,110,742,1,0,0,0,112,750,1,0,0,0,114,755,
        1,0,0,0,116,759,1,0,0,0,118,764,1,0,0,0,120,770,1,0,0,0,122,777,
        1,0,0,0,124,783,1,0,0,0,126,787,1,0,0,0,128,791,1,0,0,0,130,796,
        1,0,0,0,132,802,1,0,0,0,134,809,1,0,0,0,136,812,1,0,0,0,138,815,
        1,0,0,0,140,821,1,0,0,0,142,827,1,0,0,0,144,832,1,0,0,0,146,842,
        1,0,0,0,148,852,1,0,0,0,150,861,1,0,0,0,152,869,1,0,0,0,154,875,
        1,0,0,0,156,882,1,0,0,0,158,888,1,0,0,0,160,895,1,0,0,0,162,899,
        1,0,0,0,164,904,1,0,0,0,166,911,1,0,0,0,168,918,1,0,0,0,170,925,
        1,0,0,0,172,930,1,0,0,0,174,939,1,0,0,0,176,949,1,0,0,0,178,954,
        1,0,0,0,180,960,1,0,0,0,182,965,1,0,0,0,184,975,1,0,0,0,186,978,
        1,0,0,0,188,982,1,0,0,0,190,989,1,0,0,0,192,998,1,0,0,0,194,1003,
        1,0,0,0,196,1012,1,0,0,0,198,1016,1,0,0,0,200,1026,1,0,0,0,202,1032,
        1,0,0,0,204,1038,1,0,0,0,206,1043,1,0,0,0,208,1048,1,0,0,0,210,1054,
        1,0,0,0,212,1060,1,0,0,0,214,1067,1,0,0,0,216,1082,1,0,0,0,218,1111,
        1,0,0,0,220,1159,1,0,0,0,222,1237,1,0,0,0,224,1239,1,0,0,0,226,1246,
        1,0,0,0,228,1250,1,0,0,0,230,1257,1,0,0,0,232,1273,1,0,0,0,234,1275,
        1,0,0,0,236,1277,1,0,0,0,238,1279,1,0,0,0,240,1281,1,0,0,0,242,1283,
        1,0,0,0,244,1285,1,0,0,0,246,1287,1,0,0,0,248,1289,1,0,0,0,250,1291,
        1,0,0,0,252,1293,1,0,0,0,254,1295,1,0,0,0,256,1297,1,0,0,0,258,1299,
        1,0,0,0,260,1301,1,0,0,0,262,1303,1,0,0,0,264,1305,1,0,0,0,266,1307,
        1,0,0,0,268,1309,1,0,0,0,270,1311,1,0,0,0,272,1313,1,0,0,0,274,1315,
        1,0,0,0,276,1317,1,0,0,0,278,1319,1,0,0,0,280,1321,1,0,0,0,282,1323,
        1,0,0,0,284,1325,1,0,0,0,286,1327,1,0,0,0,288,1329,1,0,0,0,290,1331,
        1,0,0,0,292,1333,1,0,0,0,294,1336,1,0,0,0,296,1338,1,0,0,0,298,1340,
        1,0,0,0,300,1342,1,0,0,0,302,1344,1,0,0,0,304,1346,1,0,0,0,306,1349,
        1,0,0,0,308,1351,1,0,0,0,310,1353,1,0,0,0,312,1355,1,0,0,0,314,1358,
        1,0,0,0,316,1360,1,0,0,0,318,1363,1,0,0,0,320,1365,1,0,0,0,322,1367,
        1,0,0,0,324,1370,1,0,0,0,326,1374,1,0,0,0,328,1378,1,0,0,0,330,1380,
        1,0,0,0,332,1382,1,0,0,0,334,1385,1,0,0,0,336,1391,1,0,0,0,338,1397,
        1,0,0,0,340,1399,1,0,0,0,342,1406,1,0,0,0,344,1408,1,0,0,0,346,1412,
        1,0,0,0,348,1415,1,0,0,0,350,1418,1,0,0,0,352,1421,1,0,0,0,354,1423,
        1,0,0,0,356,1425,1,0,0,0,358,1427,1,0,0,0,360,1429,1,0,0,0,362,1434,
        1,0,0,0,364,1439,1,0,0,0,366,1441,1,0,0,0,368,1443,1,0,0,0,370,1446,
        1,0,0,0,372,1450,1,0,0,0,374,1452,1,0,0,0,376,1454,1,0,0,0,378,1456,
        1,0,0,0,380,1458,1,0,0,0,382,1461,1,0,0,0,384,1463,1,0,0,0,386,1481,
        1,0,0,0,388,1494,1,0,0,0,390,1509,1,0,0,0,392,1513,1,0,0,0,394,1517,
        1,0,0,0,396,1527,1,0,0,0,398,1531,1,0,0,0,400,1535,1,0,0,0,402,1541,
        1,0,0,0,404,1547,1,0,0,0,406,1556,1,0,0,0,408,1560,1,0,0,0,410,1565,
        1,0,0,0,412,1571,1,0,0,0,414,1576,1,0,0,0,416,1581,1,0,0,0,418,1591,
        1,0,0,0,420,1598,1,0,0,0,422,1602,1,0,0,0,424,1607,1,0,0,0,426,1614,
        1,0,0,0,428,1620,1,0,0,0,430,431,3,232,113,0,431,432,3,254,124,0,
        432,433,3,254,124,0,433,7,1,0,0,0,434,435,3,232,113,0,435,436,3,
        258,126,0,436,437,3,238,116,0,437,9,1,0,0,0,438,439,3,232,113,0,
        439,440,3,258,126,0,440,441,3,270,132,0,441,442,3,248,121,0,442,
        11,1,0,0,0,443,444,3,232,113,0,444,445,3,258,126,0,445,446,3,280,
        137,0,446,13,1,0,0,0,447,448,3,232,113,0,448,449,3,266,130,0,449,
        450,3,266,130,0,450,451,3,232,113,0,451,452,3,280,137,0,452,15,1,
        0,0,0,453,454,3,232,113,0,454,455,3,268,131,0,455,17,1,0,0,0,456,
        457,3,232,113,0,457,458,3,268,131,0,458,459,3,236,115,0,459,471,
        1,0,0,0,460,461,3,232,113,0,461,462,3,268,131,0,462,463,3,236,115,
        0,463,464,3,240,117,0,464,465,3,258,126,0,465,466,3,238,116,0,466,
        467,3,248,121,0,467,468,3,258,126,0,468,469,3,244,119,0,469,471,
        1,0,0,0,470,456,1,0,0,0,470,460,1,0,0,0,471,19,1,0,0,0,472,473,3,
        232,113,0,473,474,3,268,131,0,474,475,3,260,127,0,475,476,3,242,
        118,0,476,21,1,0,0,0,477,478,3,234,114,0,478,479,3,240,117,0,479,
        480,3,270,132,0,480,481,3,276,135,0,481,482,3,240,117,0,482,483,
        3,240,117,0,483,484,3,258,126,0,484,23,1,0,0,0,485,486,3,234,114,
        0,486,487,3,260,127,0,487,488,3,270,132,0,488,489,3,246,120,0,489,
        25,1,0,0,0,490,491,3,234,114,0,491,492,3,280,137,0,492,27,1,0,0,
        0,493,494,3,236,115,0,494,495,3,232,113,0,495,496,3,268,131,0,496,
        497,3,240,117,0,497,29,1,0,0,0,498,499,3,236,115,0,499,500,3,232,
        113,0,500,501,3,268,131,0,501,502,3,270,132,0,502,31,1,0,0,0,503,
        504,3,236,115,0,504,505,3,232,113,0,505,506,3,270,132,0,506,507,
        3,236,115,0,507,508,3,246,120,0,508,33,1,0,0,0,509,510,3,236,115,
        0,510,511,3,260,127,0,511,512,3,246,120,0,512,513,3,260,127,0,513,
        514,3,266,130,0,514,515,3,270,132,0,515,35,1,0,0,0,516,517,3,236,
        115,0,517,518,3,260,127,0,518,519,3,254,124,0,519,520,3,254,124,
        0,520,521,3,232,113,0,521,522,3,270,132,0,522,523,3,240,117,0,523,
        37,1,0,0,0,524,525,3,236,115,0,525,526,3,266,130,0,526,527,3,260,
        127,0,527,528,3,268,131,0,528,529,3,268,131,0,529,39,1,0,0,0,530,
        531,3,236,115,0,531,532,3,272,133,0,532,533,3,234,114,0,533,534,
        3,240,117,0,534,41,1,0,0,0,535,536,3,236,115,0,536,537,3,272,133,
        0,537,538,3,266,130,0,538,539,3,266,130,0,539,540,3,240,117,0,540,
        541,3,258,126,0,541,542,3,270,132,0,542,43,1,0,0,0,543,544,3,238,
        116,0,544,545,3,232,113,0,545,546,3,270,132,0,546,547,3,240,117,
        0,547,45,1,0,0,0,548,549,3,238,116,0,549,550,3,232,113,0,550,551,
        3,280,137,0,551,47,1,0,0,0,552,553,3,238,116,0,553,554,3,240,117,
        0,554,555,3,268,131,0,555,556,3,236,115,0,556,49,1,0,0,0,557,558,
        3,238,116,0,558,559,3,240,117,0,559,560,3,268,131,0,560,561,3,236,
        115,0,561,562,3,240,117,0,562,563,3,258,126,0,563,564,3,238,116,
        0,564,565,3,248,121,0,565,566,3,258,126,0,566,567,3,244,119,0,567,
        51,1,0,0,0,568,569,3,238,116,0,569,570,3,248,121,0,570,571,3,268,
        131,0,571,572,3,270,132,0,572,573,3,248,121,0,573,574,3,258,126,
        0,574,575,3,236,115,0,575,576,3,270,132,0,576,53,1,0,0,0,577,578,
        3,240,117,0,578,579,3,254,124,0,579,580,3,268,131,0,580,581,3,240,
        117,0,581,55,1,0,0,0,582,583,3,240,117,0,583,584,3,258,126,0,584,
        585,3,238,116,0,585,57,1,0,0,0,586,587,3,240,117,0,587,588,3,278,
        136,0,588,589,3,236,115,0,589,590,3,240,117,0,590,591,3,262,128,
        0,591,592,3,270,132,0,592,59,1,0,0,0,593,594,3,240,117,0,594,595,
        3,278,136,0,595,596,3,270,132,0,596,597,3,266,130,0,597,598,3,232,
        113,0,598,599,3,236,115,0,599,600,3,270,132,0,600,61,1,0,0,0,601,
        602,3,242,118,0,602,603,3,248,121,0,603,604,3,258,126,0,604,605,
        3,232,113,0,605,606,3,254,124,0,606,63,1,0,0,0,607,608,3,242,118,
        0,608,609,3,248,121,0,609,610,3,258,126,0,610,611,3,232,113,0,611,
        612,3,254,124,0,612,613,3,254,124,0,613,614,3,280,137,0,614,65,1,
        0,0,0,615,616,3,242,118,0,616,617,3,248,121,0,617,618,3,266,130,
        0,618,619,3,268,131,0,619,620,3,270,132,0,620,67,1,0,0,0,621,622,
        3,242,118,0,622,623,3,258,126,0,623,69,1,0,0,0,624,625,3,242,118,
        0,625,626,3,260,127,0,626,627,3,254,124,0,627,628,3,254,124,0,628,
        629,3,260,127,0,629,630,3,276,135,0,630,631,3,248,121,0,631,632,
        3,258,126,0,632,633,3,244,119,0,633,71,1,0,0,0,634,635,3,242,118,
        0,635,636,3,260,127,0,636,637,3,266,130,0,637,73,1,0,0,0,638,639,
        3,242,118,0,639,640,3,266,130,0,640,641,3,260,127,0,641,642,3,256,
        125,0,642,75,1,0,0,0,643,644,3,242,118,0,644,645,3,272,133,0,645,
        646,3,254,124,0,646,647,3,254,124,0,647,77,1,0,0,0,648,649,3,242,
        118,0,649,650,3,272,133,0,650,651,3,258,126,0,651,79,1,0,0,0,652,
        653,3,244,119,0,653,654,3,266,130,0,654,655,3,260,127,0,655,656,
        3,272,133,0,656,657,3,262,128,0,657,81,1,0,0,0,658,659,3,246,120,
        0,659,660,3,232,113,0,660,661,3,274,134,0,661,662,3,248,121,0,662,
        663,3,258,126,0,663,664,3,244,119,0,664,83,1,0,0,0,665,666,3,246,
        120,0,666,667,3,260,127,0,667,668,3,272,133,0,668,669,3,266,130,
        0,669,85,1,0,0,0,670,671,3,248,121,0,671,672,3,238,116,0,672,87,
        1,0,0,0,673,674,3,248,121,0,674,675,3,242,118,0,675,89,1,0,0,0,676,
        677,3,248,121,0,677,678,3,254,124,0,678,679,3,248,121,0,679,680,
        3,252,123,0,680,681,3,240,117,0,681,91,1,0,0,0,682,683,3,248,121,
        0,683,684,3,258,126,0,684,93,1,0,0,0,685,686,3,248,121,0,686,687,
        3,258,126,0,687,688,3,242,118,0,688,699,1,0,0,0,689,690,3,248,121,
        0,690,691,3,258,126,0,691,692,3,242,118,0,692,693,3,248,121,0,693,
        694,3,258,126,0,694,695,3,248,121,0,695,696,3,270,132,0,696,697,
        3,280,137,0,697,699,1,0,0,0,698,685,1,0,0,0,698,689,1,0,0,0,699,
        95,1,0,0,0,700,701,3,248,121,0,701,702,3,258,126,0,702,703,3,258,
        126,0,703,704,3,240,117,0,704,705,3,266,130,0,705,97,1,0,0,0,706,
        707,3,248,121,0,707,708,3,258,126,0,708,709,3,270,132,0,709,710,
        3,240,117,0,710,711,3,266,130,0,711,712,3,268,131,0,712,713,3,240,
        117,0,713,714,3,236,115,0,714,715,3,270,132,0,715,99,1,0,0,0,716,
        717,3,248,121,0,717,718,3,258,126,0,718,719,3,270,132,0,719,720,
        3,240,117,0,720,721,3,266,130,0,721,722,3,274,134,0,722,723,3,232,
        113,0,723,724,3,254,124,0,724,101,1,0,0,0,725,726,3,248,121,0,726,
        727,3,268,131,0,727,103,1,0,0,0,728,729,3,250,122,0,729,730,3,260,
        127,0,730,731,3,248,121,0,731,732,3,258,126,0,732,105,1,0,0,0,733,
        734,3,252,123,0,734,735,3,240,117,0,735,736,3,280,137,0,736,107,
        1,0,0,0,737,738,3,254,124,0,738,739,3,232,113,0,739,740,3,268,131,
        0,740,741,3,270,132,0,741,109,1,0,0,0,742,743,3,254,124,0,743,744,
        3,240,117,0,744,745,3,232,113,0,745,746,3,238,116,0,746,747,3,248,
        121,0,747,748,3,258,126,0,748,749,3,244,119,0,749,111,1,0,0,0,750,
        751,3,254,124,0,751,752,3,240,117,0,752,753,3,242,118,0,753,754,
        3,270,132,0,754,113,1,0,0,0,755,756,3,254,124,0,756,757,3,240,117,
        0,757,758,3,270,132,0,758,115,1,0,0,0,759,760,3,254,124,0,760,761,
        3,248,121,0,761,762,3,252,123,0,762,763,3,240,117,0,763,117,1,0,
        0,0,764,765,3,254,124,0,765,766,3,248,121,0,766,767,3,256,125,0,
        767,768,3,248,121,0,768,769,3,270,132,0,769,119,1,0,0,0,770,771,
        3,256,125,0,771,772,3,248,121,0,772,773,3,258,126,0,773,774,3,272,
        133,0,774,775,3,270,132,0,775,776,3,240,117,0,776,121,1,0,0,0,777,
        778,3,256,125,0,778,779,3,260,127,0,779,780,3,258,126,0,780,781,
        3,270,132,0,781,782,3,246,120,0,782,123,1,0,0,0,783,784,3,258,126,
        0,784,785,3,232,113,0,785,786,3,258,126,0,786,125,1,0,0,0,787,788,
        3,258,126,0,788,789,3,260,127,0,789,790,3,270,132,0,790,127,1,0,
        0,0,791,792,3,258,126,0,792,793,3,272,133,0,793,794,3,254,124,0,
        794,795,3,254,124,0,795,129,1,0,0,0,796,797,3,258,126,0,797,798,
        3,272,133,0,798,799,3,254,124,0,799,800,3,254,124,0,800,801,3,268,
        131,0,801,131,1,0,0,0,802,803,3,260,127,0,803,804,3,242,118,0,804,
        805,3,242,118,0,805,806,3,268,131,0,806,807,3,240,117,0,807,808,
        3,270,132,0,808,133,1,0,0,0,809,810,3,260,127,0,810,811,3,258,126,
        0,811,135,1,0,0,0,812,813,3,260,127,0,813,814,3,266,130,0,814,137,
        1,0,0,0,815,816,3,260,127,0,816,817,3,266,130,0,817,818,3,238,116,
        0,818,819,3,240,117,0,819,820,3,266,130,0,820,139,1,0,0,0,821,822,
        3,260,127,0,822,823,3,272,133,0,823,824,3,270,132,0,824,825,3,240,
        117,0,825,826,3,266,130,0,826,141,1,0,0,0,827,828,3,260,127,0,828,
        829,3,274,134,0,829,830,3,240,117,0,830,831,3,266,130,0,831,143,
        1,0,0,0,832,833,3,262,128,0,833,834,3,232,113,0,834,835,3,266,130,
        0,835,836,3,270,132,0,836,837,3,248,121,0,837,838,3,270,132,0,838,
        839,3,248,121,0,839,840,3,260,127,0,840,841,3,258,126,0,841,145,
        1,0,0,0,842,843,3,262,128,0,843,844,3,266,130,0,844,845,3,240,117,
        0,845,846,3,236,115,0,846,847,3,240,117,0,847,848,3,238,116,0,848,
        849,3,248,121,0,849,850,3,258,126,0,850,851,3,244,119,0,851,147,
        1,0,0,0,852,853,3,262,128,0,853,854,3,266,130,0,854,855,3,240,117,
        0,855,856,3,276,135,0,856,857,3,246,120,0,857,858,3,240,117,0,858,
        859,3,266,130,0,859,860,3,240,117,0,860,149,1,0,0,0,861,862,3,264,
        129,0,862,863,3,272,133,0,863,864,3,232,113,0,864,865,3,266,130,
        0,865,866,3,270,132,0,866,867,3,240,117,0,867,868,3,266,130,0,868,
        151,1,0,0,0,869,870,3,266,130,0,870,871,3,232,113,0,871,872,3,258,
        126,0,872,873,3,244,119,0,873,874,3,240,117,0,874,153,1,0,0,0,875,
        876,3,266,130,0,876,877,3,240,117,0,877,878,3,270,132,0,878,879,
        3,272,133,0,879,880,3,266,130,0,880,881,3,258,126,0,881,155,1,0,
        0,0,882,883,3,266,130,0,883,884,3,248,121,0,884,885,3,244,119,0,
        885,886,3,246,120,0,886,887,3,270,132,0,887,157,1,0,0,0,888,889,
        3,266,130,0,889,890,3,260,127,0,890,891,3,254,124,0,891,892,3,254,
        124,0,892,893,3,272,133,0,893,894,3,262,128,0,894,159,1,0,0,0,895,
        896,3,266,130,0,896,897,3,260,127,0,897,898,3,276,135,0,898,161,
        1,0,0,0,899,900,3,266,130,0,900,901,3,260,127,0,901,902,3,276,135,
        0,902,903,3,268,131,0,903,163,1,0,0,0,904,905,3,268,131,0,905,906,
        3,232,113,0,906,907,3,256,125,0,907,908,3,262,128,0,908,909,3,254,
        124,0,909,910,3,240,117,0,910,165,1,0,0,0,911,912,3,268,131,0,912,
        913,3,240,117,0,913,914,3,236,115,0,914,915,3,260,127,0,915,916,
        3,258,126,0,916,917,3,238,116,0,917,167,1,0,0,0,918,919,3,268,131,
        0,919,920,3,240,117,0,920,921,3,254,124,0,921,922,3,240,117,0,922,
        923,3,236,115,0,923,924,3,270,132,0,924,169,1,0,0,0,925,926,3,268,
        131,0,926,927,3,240,117,0,927,928,3,256,125,0,928,929,3,248,121,
        0,929,171,1,0,0,0,930,931,3,268,131,0,931,932,3,240,117,0,932,933,
        3,270,132,0,933,934,3,270,132,0,934,935,3,248,121,0,935,936,3,258,
        126,0,936,937,3,244,119,0,937,938,3,268,131,0,938,173,1,0,0,0,939,
        940,3,268,131,0,940,941,3,272,133,0,941,942,3,234,114,0,942,943,
        3,268,131,0,943,944,3,270,132,0,944,945,3,266,130,0,945,946,3,248,
        121,0,946,947,3,258,126,0,947,948,3,244,119,0,948,175,1,0,0,0,949,
        950,3,270,132,0,950,951,3,246,120,0,951,952,3,240,117,0,952,953,
        3,258,126,0,953,177,1,0,0,0,954,955,3,270,132,0,955,956,3,246,120,
        0,956,957,3,266,130,0,957,958,3,260,127,0,958,959,3,276,135,0,959,
        179,1,0,0,0,960,961,3,270,132,0,961,962,3,248,121,0,962,963,3,240,
        117,0,963,964,3,268,131,0,964,181,1,0,0,0,965,966,3,270,132,0,966,
        967,3,248,121,0,967,968,3,256,125,0,968,969,3,240,117,0,969,970,
        3,268,131,0,970,971,3,270,132,0,971,972,3,232,113,0,972,973,3,256,
        125,0,973,974,3,262,128,0,974,183,1,0,0,0,975,976,3,270,132,0,976,
        977,3,260,127,0,977,185,1,0,0,0,978,979,3,270,132,0,979,980,3,260,
        127,0,980,981,3,262,128,0,981,187,1,0,0,0,982,983,3,270,132,0,983,
        984,3,260,127,0,984,985,3,270,132,0,985,986,3,232,113,0,986,987,
        3,254,124,0,987,988,3,268,131,0,988,189,1,0,0,0,989,990,3,270,132,
        0,990,991,3,266,130,0,991,992,3,232,113,0,992,993,3,248,121,0,993,
        994,3,254,124,0,994,995,3,248,121,0,995,996,3,258,126,0,996,997,
        3,244,119,0,997,191,1,0,0,0,998,999,3,270,132,0,999,1000,3,266,130,
        0,1000,1001,3,248,121,0,1001,1002,3,256,125,0,1002,193,1,0,0,0,1003,
        1004,3,270,132,0,1004,1005,3,266,130,0,1005,1006,3,272,133,0,1006,
        1007,3,258,126,0,1007,1008,3,236,115,0,1008,1009,3,232,113,0,1009,
        1010,3,270,132,0,1010,1011,3,240,117,0,1011,195,1,0,0,0,1012,1013,
        3,270,132,0,1013,1014,3,266,130,0,1014,1015,3,280,137,0,1015,197,
        1,0,0,0,1016,1017,3,272,133,0,1017,1018,3,258,126,0,1018,1019,3,
        234,114,0,1019,1020,3,260,127,0,1020,1021,3,272,133,0,1021,1022,
        3,258,126,0,1022,1023,3,238,116,0,1023,1024,3,240,117,0,1024,1025,
        3,238,116,0,1025,199,1,0,0,0,1026,1027,3,272,133,0,1027,1028,3,258,
        126,0,1028,1029,3,248,121,0,1029,1030,3,260,127,0,1030,1031,3,258,
        126,0,1031,201,1,0,0,0,1032,1033,3,272,133,0,1033,1034,3,268,131,
        0,1034,1035,3,248,121,0,1035,1036,3,258,126,0,1036,1037,3,244,119,
        0,1037,203,1,0,0,0,1038,1039,3,276,135,0,1039,1040,3,240,117,0,1040,
        1041,3,240,117,0,1041,1042,3,252,123,0,1042,205,1,0,0,0,1043,1044,
        3,276,135,0,1044,1045,3,246,120,0,1045,1046,3,240,117,0,1046,1047,
        3,258,126,0,1047,207,1,0,0,0,1048,1049,3,276,135,0,1049,1050,3,246,
        120,0,1050,1051,3,240,117,0,1051,1052,3,266,130,0,1052,1053,3,240,
        117,0,1053,209,1,0,0,0,1054,1055,3,276,135,0,1055,1056,3,246,120,
        0,1056,1057,3,248,121,0,1057,1058,3,254,124,0,1058,1059,3,240,117,
        0,1059,211,1,0,0,0,1060,1061,3,276,135,0,1061,1062,3,248,121,0,1062,
        1063,3,258,126,0,1063,1064,3,238,116,0,1064,1065,3,260,127,0,1065,
        1066,3,276,135,0,1066,213,1,0,0,0,1067,1068,3,276,135,0,1068,1069,
        3,248,121,0,1069,1070,3,270,132,0,1070,1071,3,246,120,0,1071,215,
        1,0,0,0,1072,1073,3,280,137,0,1073,1074,3,240,117,0,1074,1075,3,
        232,113,0,1075,1076,3,266,130,0,1076,1083,1,0,0,0,1077,1078,3,280,
        137,0,1078,1079,3,280,137,0,1079,1080,3,280,137,0,1080,1081,3,280,
        137,0,1081,1083,1,0,0,0,1082,1072,1,0,0,0,1082,1077,1,0,0,0,1083,
        217,1,0,0,0,1084,1085,3,298,146,0,1085,1086,3,234,114,0,1086,1112,
        1,0,0,0,1087,1088,3,298,146,0,1088,1089,3,242,118,0,1089,1112,1,
        0,0,0,1090,1091,3,298,146,0,1091,1092,3,266,130,0,1092,1112,1,0,
        0,0,1093,1094,3,298,146,0,1094,1095,3,258,126,0,1095,1112,1,0,0,
        0,1096,1097,3,298,146,0,1097,1098,3,270,132,0,1098,1112,1,0,0,0,
        1099,1100,3,298,146,0,1100,1101,5,48,0,0,1101,1112,1,0,0,0,1102,
        1103,3,298,146,0,1103,1104,3,232,113,0,1104,1112,1,0,0,0,1105,1106,
        3,298,146,0,1106,1107,3,274,134,0,1107,1112,1,0,0,0,1108,1109,3,
        298,146,0,1109,1110,3,298,146,0,1110,1112,1,0,0,0,1111,1084,1,0,
        0,0,1111,1087,1,0,0,0,1111,1090,1,0,0,0,1111,1093,1,0,0,0,1111,1096,
        1,0,0,0,1111,1099,1,0,0,0,1111,1102,1,0,0,0,1111,1105,1,0,0,0,1111,
        1108,1,0,0,0,1112,219,1,0,0,0,1113,1117,3,284,139,0,1114,1117,3,
        382,188,0,1115,1117,3,308,151,0,1116,1113,1,0,0,0,1116,1114,1,0,
        0,0,1116,1115,1,0,0,0,1117,1124,1,0,0,0,1118,1123,3,284,139,0,1119,
        1123,3,382,188,0,1120,1123,3,288,141,0,1121,1123,3,308,151,0,1122,
        1118,1,0,0,0,1122,1119,1,0,0,0,1122,1120,1,0,0,0,1122,1121,1,0,0,
        0,1123,1126,1,0,0,0,1124,1122,1,0,0,0,1124,1125,1,0,0,0,1125,1160,
        1,0,0,0,1126,1124,1,0,0,0,1127,1138,3,296,145,0,1128,1137,8,0,0,
        0,1129,1137,3,218,106,0,1130,1131,3,298,146,0,1131,1132,3,364,179,
        0,1132,1137,1,0,0,0,1133,1134,3,296,145,0,1134,1135,3,296,145,0,
        1135,1137,1,0,0,0,1136,1128,1,0,0,0,1136,1129,1,0,0,0,1136,1130,
        1,0,0,0,1136,1133,1,0,0,0,1137,1140,1,0,0,0,1138,1136,1,0,0,0,1138,
        1139,1,0,0,0,1139,1141,1,0,0,0,1140,1138,1,0,0,0,1141,1142,3,296,
        145,0,1142,1160,1,0,0,0,1143,1154,3,358,176,0,1144,1153,8,1,0,0,
        1145,1153,3,218,106,0,1146,1147,3,298,146,0,1147,1148,3,358,176,
        0,1148,1153,1,0,0,0,1149,1150,3,358,176,0,1150,1151,3,358,176,0,
        1151,1153,1,0,0,0,1152,1144,1,0,0,0,1152,1145,1,0,0,0,1152,1146,
        1,0,0,0,1152,1149,1,0,0,0,1153,1156,1,0,0,0,1154,1152,1,0,0,0,1154,
        1155,1,0,0,0,1155,1157,1,0,0,0,1156,1154,1,0,0,0,1157,1158,3,358,
        176,0,1158,1160,1,0,0,0,1159,1116,1,0,0,0,1159,1127,1,0,0,0,1159,
        1143,1,0,0,0,1160,221,1,0,0,0,1161,1162,3,228,111,0,1162,1166,3,
        310,152,0,1163,1165,3,290,142,0,1164,1163,1,0,0,0,1165,1168,1,0,
        0,0,1166,1164,1,0,0,0,1166,1167,1,0,0,0,1167,1171,1,0,0,0,1168,1166,
        1,0,0,0,1169,1172,3,262,128,0,1170,1172,3,240,117,0,1171,1169,1,
        0,0,0,1171,1170,1,0,0,0,1172,1175,1,0,0,0,1173,1176,3,354,174,0,
        1174,1176,3,306,150,0,1175,1173,1,0,0,0,1175,1174,1,0,0,0,1175,1176,
        1,0,0,0,1176,1178,1,0,0,0,1177,1179,3,288,141,0,1178,1177,1,0,0,
        0,1179,1180,1,0,0,0,1180,1178,1,0,0,0,1180,1181,1,0,0,0,1181,1238,
        1,0,0,0,1182,1185,3,228,111,0,1183,1186,3,262,128,0,1184,1186,3,
        240,117,0,1185,1183,1,0,0,0,1185,1184,1,0,0,0,1186,1189,1,0,0,0,
        1187,1190,3,354,174,0,1188,1190,3,306,150,0,1189,1187,1,0,0,0,1189,
        1188,1,0,0,0,1189,1190,1,0,0,0,1190,1192,1,0,0,0,1191,1193,3,288,
        141,0,1192,1191,1,0,0,0,1193,1194,1,0,0,0,1194,1192,1,0,0,0,1194,
        1195,1,0,0,0,1195,1238,1,0,0,0,1196,1197,3,226,110,0,1197,1201,3,
        310,152,0,1198,1200,3,288,141,0,1199,1198,1,0,0,0,1200,1203,1,0,
        0,0,1201,1199,1,0,0,0,1201,1202,1,0,0,0,1202,1204,1,0,0,0,1203,1201,
        1,0,0,0,1204,1207,3,240,117,0,1205,1208,3,354,174,0,1206,1208,3,
        306,150,0,1207,1205,1,0,0,0,1207,1206,1,0,0,0,1207,1208,1,0,0,0,
        1208,1210,1,0,0,0,1209,1211,3,288,141,0,1210,1209,1,0,0,0,1211,1212,
        1,0,0,0,1212,1210,1,0,0,0,1212,1213,1,0,0,0,1213,1238,1,0,0,0,1214,
        1215,3,310,152,0,1215,1216,3,226,110,0,1216,1219,3,240,117,0,1217,
        1220,3,354,174,0,1218,1220,3,306,150,0,1219,1217,1,0,0,0,1219,1218,
        1,0,0,0,1219,1220,1,0,0,0,1220,1222,1,0,0,0,1221,1223,3,288,141,
        0,1222,1221,1,0,0,0,1223,1224,1,0,0,0,1224,1222,1,0,0,0,1224,1225,
        1,0,0,0,1225,1238,1,0,0,0,1226,1227,3,226,110,0,1227,1230,3,240,
        117,0,1228,1231,3,354,174,0,1229,1231,3,306,150,0,1230,1228,1,0,
        0,0,1230,1229,1,0,0,0,1230,1231,1,0,0,0,1231,1233,1,0,0,0,1232,1234,
        3,288,141,0,1233,1232,1,0,0,0,1234,1235,1,0,0,0,1235,1233,1,0,0,
        0,1235,1236,1,0,0,0,1236,1238,1,0,0,0,1237,1161,1,0,0,0,1237,1182,
        1,0,0,0,1237,1196,1,0,0,0,1237,1214,1,0,0,0,1237,1226,1,0,0,0,1238,
        223,1,0,0,0,1239,1241,5,48,0,0,1240,1242,3,286,140,0,1241,1240,1,
        0,0,0,1242,1243,1,0,0,0,1243,1241,1,0,0,0,1243,1244,1,0,0,0,1244,
        225,1,0,0,0,1245,1247,3,288,141,0,1246,1245,1,0,0,0,1247,1248,1,
        0,0,0,1248,1246,1,0,0,0,1248,1249,1,0,0,0,1249,227,1,0,0,0,1250,
        1251,5,48,0,0,1251,1253,3,278,136,0,1252,1254,3,290,142,0,1253,1252,
        1,0,0,0,1254,1255,1,0,0,0,1255,1253,1,0,0,0,1255,1256,1,0,0,0,1256,
        229,1,0,0,0,1257,1268,3,364,179,0,1258,1267,8,2,0,0,1259,1267,3,
        218,106,0,1260,1261,3,298,146,0,1261,1262,3,364,179,0,1262,1267,
        1,0,0,0,1263,1264,3,364,179,0,1264,1265,3,364,179,0,1265,1267,1,
        0,0,0,1266,1258,1,0,0,0,1266,1259,1,0,0,0,1266,1260,1,0,0,0,1266,
        1263,1,0,0,0,1267,1270,1,0,0,0,1268,1266,1,0,0,0,1268,1269,1,0,0,
        0,1269,1271,1,0,0,0,1270,1268,1,0,0,0,1271,1272,3,364,179,0,1272,
        231,1,0,0,0,1273,1274,7,3,0,0,1274,233,1,0,0,0,1275,1276,7,4,0,0,
        1276,235,1,0,0,0,1277,1278,7,5,0,0,1278,237,1,0,0,0,1279,1280,7,
        6,0,0,1280,239,1,0,0,0,1281,1282,7,7,0,0,1282,241,1,0,0,0,1283,1284,
        7,8,0,0,1284,243,1,0,0,0,1285,1286,7,9,0,0,1286,245,1,0,0,0,1287,
        1288,7,10,0,0,1288,247,1,0,0,0,1289,1290,7,11,0,0,1290,249,1,0,0,
        0,1291,1292,7,12,0,0,1292,251,1,0,0,0,1293,1294,7,13,0,0,1294,253,
        1,0,0,0,1295,1296,7,14,0,0,1296,255,1,0,0,0,1297,1298,7,15,0,0,1298,
        257,1,0,0,0,1299,1300,7,16,0,0,1300,259,1,0,0,0,1301,1302,7,17,0,
        0,1302,261,1,0,0,0,1303,1304,7,18,0,0,1304,263,1,0,0,0,1305,1306,
        7,19,0,0,1306,265,1,0,0,0,1307,1308,7,20,0,0,1308,267,1,0,0,0,1309,
        1310,7,21,0,0,1310,269,1,0,0,0,1311,1312,7,22,0,0,1312,271,1,0,0,
        0,1313,1314,7,23,0,0,1314,273,1,0,0,0,1315,1316,7,24,0,0,1316,275,
        1,0,0,0,1317,1318,7,25,0,0,1318,277,1,0,0,0,1319,1320,7,26,0,0,1320,
        279,1,0,0,0,1321,1322,7,27,0,0,1322,281,1,0,0,0,1323,1324,7,28,0,
        0,1324,283,1,0,0,0,1325,1326,7,29,0,0,1326,285,1,0,0,0,1327,1328,
        7,30,0,0,1328,287,1,0,0,0,1329,1330,7,31,0,0,1330,289,1,0,0,0,1331,
        1332,7,32,0,0,1332,291,1,0,0,0,1333,1334,5,45,0,0,1334,1335,5,62,
        0,0,1335,293,1,0,0,0,1336,1337,5,42,0,0,1337,295,1,0,0,0,1338,1339,
        5,96,0,0,1339,297,1,0,0,0,1340,1341,5,92,0,0,1341,299,1,0,0,0,1342,
        1343,5,58,0,0,1343,301,1,0,0,0,1344,1345,5,44,0,0,1345,303,1,0,0,
        0,1346,1347,5,124,0,0,1347,1348,5,124,0,0,1348,305,1,0,0,0,1349,
        1350,5,45,0,0,1350,307,1,0,0,0,1351,1352,5,36,0,0,1352,309,1,0,0,
        0,1353,1354,5,46,0,0,1354,311,1,0,0,0,1355,1356,5,61,0,0,1356,1357,
        5,61,0,0,1357,313,1,0,0,0,1358,1359,5,61,0,0,1359,315,1,0,0,0,1360,
        1361,5,62,0,0,1361,1362,5,61,0,0,1362,317,1,0,0,0,1363,1364,5,62,
        0,0,1364,319,1,0,0,0,1365,1366,5,35,0,0,1366,321,1,0,0,0,1367,1368,
        5,126,0,0,1368,1369,5,42,0,0,1369,323,1,0,0,0,1370,1371,5,61,0,0,
        1371,1372,5,126,0,0,1372,1373,5,42,0,0,1373,325,1,0,0,0,1374,1375,
        5,123,0,0,1375,1376,1,0,0,0,1376,1377,6,160,0,0,1377,327,1,0,0,0,
        1378,1379,5,91,0,0,1379,329,1,0,0,0,1380,1381,5,40,0,0,1381,331,
        1,0,0,0,1382,1383,5,60,0,0,1383,1384,5,61,0,0,1384,333,1,0,0,0,1385,
        1386,5,60,0,0,1386,1387,5,47,0,0,1387,1388,1,0,0,0,1388,1389,6,164,
        1,0,1389,1390,6,164,2,0,1390,335,1,0,0,0,1391,1392,5,60,0,0,1392,
        1393,4,165,0,0,1393,1394,1,0,0,0,1394,1395,6,165,3,0,1395,1396,6,
        165,4,0,1396,337,1,0,0,0,1397,1398,5,60,0,0,1398,339,1,0,0,0,1399,
        1400,5,60,0,0,1400,1401,5,47,0,0,1401,341,1,0,0,0,1402,1403,5,33,
        0,0,1403,1407,5,61,0,0,1404,1405,5,60,0,0,1405,1407,5,62,0,0,1406,
        1402,1,0,0,0,1406,1404,1,0,0,0,1407,343,1,0,0,0,1408,1409,5,33,0,
        0,1409,1410,5,126,0,0,1410,1411,5,42,0,0,1411,345,1,0,0,0,1412,1413,
        5,33,0,0,1413,1414,5,126,0,0,1414,347,1,0,0,0,1415,1416,5,63,0,0,
        1416,1417,5,46,0,0,1417,349,1,0,0,0,1418,1419,5,63,0,0,1419,1420,
        5,63,0,0,1420,351,1,0,0,0,1421,1422,5,37,0,0,1422,353,1,0,0,0,1423,
        1424,5,43,0,0,1424,355,1,0,0,0,1425,1426,5,63,0,0,1426,357,1,0,0,
        0,1427,1428,5,34,0,0,1428,359,1,0,0,0,1429,1430,5,102,0,0,1430,1431,
        5,39,0,0,1431,1432,1,0,0,0,1432,1433,6,177,5,0,1433,361,1,0,0,0,
        1434,1435,5,70,0,0,1435,1436,5,39,0,0,1436,1437,1,0,0,0,1437,1438,
        6,178,6,0,1438,363,1,0,0,0,1439,1440,5,39,0,0,1440,365,1,0,0,0,1441,
        1442,5,126,0,0,1442,367,1,0,0,0,1443,1444,5,61,0,0,1444,1445,5,126,
        0,0,1445,369,1,0,0,0,1446,1447,5,125,0,0,1447,1448,1,0,0,0,1448,
        1449,6,182,7,0,1449,371,1,0,0,0,1450,1451,5,93,0,0,1451,373,1,0,
        0,0,1452,1453,5,41,0,0,1453,375,1,0,0,0,1454,1455,5,59,0,0,1455,
        377,1,0,0,0,1456,1457,5,47,0,0,1457,379,1,0,0,0,1458,1459,5,47,0,
        0,1459,1460,5,62,0,0,1460,381,1,0,0,0,1461,1462,5,95,0,0,1462,383,
        1,0,0,0,1463,1464,5,47,0,0,1464,1465,5,42,0,0,1465,1469,1,0,0,0,
        1466,1468,9,0,0,0,1467,1466,1,0,0,0,1468,1471,1,0,0,0,1469,1470,
        1,0,0,0,1469,1467,1,0,0,0,1470,1472,1,0,0,0,1471,1469,1,0,0,0,1472,
        1473,5,42,0,0,1473,1474,5,47,0,0,1474,1475,1,0,0,0,1475,1476,6,189,
        8,0,1476,385,1,0,0,0,1477,1478,5,45,0,0,1478,1482,5,45,0,0,1479,
        1480,5,47,0,0,1480,1482,5,47,0,0,1481,1477,1,0,0,0,1481,1479,1,0,
        0,0,1482,1486,1,0,0,0,1483,1485,8,33,0,0,1484,1483,1,0,0,0,1485,
        1488,1,0,0,0,1486,1484,1,0,0,0,1486,1487,1,0,0,0,1487,1490,1,0,0,
        0,1488,1486,1,0,0,0,1489,1491,7,34,0,0,1490,1489,1,0,0,0,1491,1492,
        1,0,0,0,1492,1493,6,190,8,0,1493,387,1,0,0,0,1494,1495,7,35,0,0,
        1495,1496,1,0,0,0,1496,1497,6,191,9,0,1497,389,1,0,0,0,1498,1510,
        8,36,0,0,1499,1510,3,218,106,0,1500,1501,3,298,146,0,1501,1502,3,
        364,179,0,1502,1510,1,0,0,0,1503,1504,3,298,146,0,1504,1505,3,326,
        160,0,1505,1510,1,0,0,0,1506,1507,3,364,179,0,1507,1508,3,364,179,
        0,1508,1510,1,0,0,0,1509,1498,1,0,0,0,1509,1499,1,0,0,0,1509,1500,
        1,0,0,0,1509,1503,1,0,0,0,1509,1506,1,0,0,0,1510,1511,1,0,0,0,1511,
        1509,1,0,0,0,1511,1512,1,0,0,0,1512,391,1,0,0,0,1513,1514,3,326,
        160,0,1514,1515,1,0,0,0,1515,1516,6,193,0,0,1516,393,1,0,0,0,1517,
        1518,3,364,179,0,1518,1519,1,0,0,0,1519,1520,6,194,10,0,1520,1521,
        6,194,7,0,1521,395,1,0,0,0,1522,1528,8,37,0,0,1523,1528,3,218,106,
        0,1524,1525,3,298,146,0,1525,1526,3,326,160,0,1526,1528,1,0,0,0,
        1527,1522,1,0,0,0,1527,1523,1,0,0,0,1527,1524,1,0,0,0,1528,1529,
        1,0,0,0,1529,1527,1,0,0,0,1529,1530,1,0,0,0,1530,397,1,0,0,0,1531,
        1532,3,326,160,0,1532,1533,1,0,0,0,1533,1534,6,196,0,0,1534,399,
        1,0,0,0,1535,1536,5,47,0,0,1536,1537,5,62,0,0,1537,1538,1,0,0,0,
        1538,1539,6,197,11,0,1539,1540,6,197,7,0,1540,401,1,0,0,0,1541,1542,
        5,62,0,0,1542,1543,1,0,0,0,1543,1544,6,198,12,0,1544,1545,6,198,
        7,0,1545,1546,6,198,13,0,1546,403,1,0,0,0,1547,1551,7,38,0,0,1548,
        1550,7,39,0,0,1549,1548,1,0,0,0,1550,1553,1,0,0,0,1551,1549,1,0,
        0,0,1551,1552,1,0,0,0,1552,1554,1,0,0,0,1553,1551,1,0,0,0,1554,1555,
        6,199,14,0,1555,405,1,0,0,0,1556,1557,5,61,0,0,1557,1558,1,0,0,0,
        1558,1559,6,200,15,0,1559,407,1,0,0,0,1560,1561,3,230,112,0,1561,
        1562,1,0,0,0,1562,1563,6,201,16,0,1563,409,1,0,0,0,1564,1566,7,40,
        0,0,1565,1564,1,0,0,0,1566,1567,1,0,0,0,1567,1565,1,0,0,0,1567,1568,
        1,0,0,0,1568,1569,1,0,0,0,1569,1570,6,202,9,0,1570,411,1,0,0,0,1571,
        1572,5,123,0,0,1572,1573,1,0,0,0,1573,1574,6,203,17,0,1574,1575,
        6,203,0,0,1575,413,1,0,0,0,1576,1577,5,62,0,0,1577,1578,1,0,0,0,
        1578,1579,6,204,12,0,1579,1580,6,204,7,0,1580,415,1,0,0,0,1581,1585,
        7,38,0,0,1582,1584,7,39,0,0,1583,1582,1,0,0,0,1584,1587,1,0,0,0,
        1585,1583,1,0,0,0,1585,1586,1,0,0,0,1586,1588,1,0,0,0,1587,1585,
        1,0,0,0,1588,1589,6,205,14,0,1589,417,1,0,0,0,1590,1592,7,40,0,0,
        1591,1590,1,0,0,0,1592,1593,1,0,0,0,1593,1591,1,0,0,0,1593,1594,
        1,0,0,0,1594,1595,1,0,0,0,1595,1596,6,206,9,0,1596,419,1,0,0,0,1597,
        1599,8,41,0,0,1598,1597,1,0,0,0,1599,1600,1,0,0,0,1600,1598,1,0,
        0,0,1600,1601,1,0,0,0,1601,421,1,0,0,0,1602,1603,5,123,0,0,1603,
        1604,1,0,0,0,1604,1605,6,208,17,0,1605,1606,6,208,0,0,1606,423,1,
        0,0,0,1607,1608,5,60,0,0,1608,1609,5,47,0,0,1609,1610,1,0,0,0,1610,
        1611,6,209,1,0,1611,1612,6,209,7,0,1612,1613,6,209,2,0,1613,425,
        1,0,0,0,1614,1615,5,60,0,0,1615,1616,1,0,0,0,1616,1617,6,210,3,0,
        1617,1618,6,210,4,0,1618,427,1,0,0,0,1619,1621,7,40,0,0,1620,1619,
        1,0,0,0,1621,1622,1,0,0,0,1622,1620,1,0,0,0,1622,1623,1,0,0,0,1623,
        1624,1,0,0,0,1624,1625,6,211,9,0,1625,429,1,0,0,0,53,0,1,2,3,4,5,
        470,698,1082,1111,1116,1122,1124,1136,1138,1152,1154,1159,1166,1171,
        1175,1180,1185,1189,1194,1201,1207,1212,1219,1224,1230,1235,1237,
        1243,1248,1255,1266,1268,1406,1469,1481,1486,1490,1509,1511,1527,
        1529,1551,1567,1585,1593,1600,1622,18,5,0,0,7,136,0,5,4,0,7,135,
        0,5,3,0,5,1,0,5,2,0,4,0,0,6,0,0,0,1,0,7,148,0,7,156,0,7,127,0,5,
        5,0,7,108,0,7,125,0,7,113,0,7,131,0
    ]

class HogQLLexer(Lexer):

    atn = ATNDeserializer().deserialize(serializedATN())

    decisionsToDFA = [ DFA(ds, i) for i, ds in enumerate(atn.decisionToState) ]

    IN_TEMPLATE_STRING = 1
    IN_FULL_TEMPLATE_STRING = 2
    HOGQLX_TAG_OPEN = 3
    HOGQLX_TAG_CLOSE = 4
    HOGQLX_TEXT = 5

    ALL = 1
    AND = 2
    ANTI = 3
    ANY = 4
    ARRAY = 5
    AS = 6
    ASCENDING = 7
    ASOF = 8
    BETWEEN = 9
    BOTH = 10
    BY = 11
    CASE = 12
    CAST = 13
    CATCH = 14
    COHORT = 15
    COLLATE = 16
    CROSS = 17
    CUBE = 18
    CURRENT = 19
    DATE = 20
    DAY = 21
    DESC = 22
    DESCENDING = 23
    DISTINCT = 24
    ELSE = 25
    END = 26
    EXCEPT = 27
    EXTRACT = 28
    FINAL = 29
    FINALLY = 30
    FIRST = 31
    FN = 32
    FOLLOWING = 33
    FOR = 34
    FROM = 35
    FULL = 36
    FUN = 37
    GROUP = 38
    HAVING = 39
    HOUR = 40
    ID = 41
    IF = 42
    ILIKE = 43
    IN = 44
    INF = 45
    INNER = 46
    INTERSECT = 47
    INTERVAL = 48
    IS = 49
    JOIN = 50
    KEY = 51
    LAST = 52
    LEADING = 53
    LEFT = 54
    LET = 55
    LIKE = 56
    LIMIT = 57
    MINUTE = 58
    MONTH = 59
    NAN_SQL = 60
    NOT = 61
    NULL_SQL = 62
    NULLS = 63
    OFFSET = 64
    ON = 65
    OR = 66
    ORDER = 67
    OUTER = 68
    OVER = 69
    PARTITION = 70
    PRECEDING = 71
    PREWHERE = 72
    QUARTER = 73
    RANGE = 74
    RETURN = 75
    RIGHT = 76
    ROLLUP = 77
    ROW = 78
    ROWS = 79
    SAMPLE = 80
    SECOND = 81
    SELECT = 82
    SEMI = 83
    SETTINGS = 84
    SUBSTRING = 85
    THEN = 86
    THROW = 87
    TIES = 88
    TIMESTAMP = 89
    TO = 90
    TOP = 91
    TOTALS = 92
    TRAILING = 93
    TRIM = 94
    TRUNCATE = 95
    TRY = 96
    UNBOUNDED = 97
    UNION = 98
    USING = 99
    WEEK = 100
    WHEN = 101
    WHERE = 102
    WHILE = 103
    WINDOW = 104
    WITH = 105
    YEAR = 106
    ESCAPE_CHAR_COMMON = 107
    IDENTIFIER = 108
    FLOATING_LITERAL = 109
    OCTAL_LITERAL = 110
    DECIMAL_LITERAL = 111
    HEXADECIMAL_LITERAL = 112
    STRING_LITERAL = 113
    ARROW = 114
    ASTERISK = 115
    BACKQUOTE = 116
    BACKSLASH = 117
    COLON = 118
    COMMA = 119
    CONCAT = 120
    DASH = 121
    DOLLAR = 122
    DOT = 123
    EQ_DOUBLE = 124
    EQ_SINGLE = 125
    GT_EQ = 126
    GT = 127
    HASH = 128
    IREGEX_SINGLE = 129
    IREGEX_DOUBLE = 130
    LBRACE = 131
    LBRACKET = 132
    LPAREN = 133
    LT_EQ = 134
    LT = 135
    LT_SLASH = 136
    NOT_EQ = 137
    NOT_IREGEX = 138
    NOT_REGEX = 139
    NULL_PROPERTY = 140
    NULLISH = 141
    PERCENT = 142
    PLUS = 143
    QUERY = 144
    QUOTE_DOUBLE = 145
    QUOTE_SINGLE_TEMPLATE = 146
    QUOTE_SINGLE_TEMPLATE_FULL = 147
    QUOTE_SINGLE = 148
    REGEX_SINGLE = 149
    REGEX_DOUBLE = 150
    RBRACE = 151
    RBRACKET = 152
    RPAREN = 153
    SEMICOLON = 154
    SLASH = 155
    SLASH_GT = 156
    UNDERSCORE = 157
    MULTI_LINE_COMMENT = 158
    SINGLE_LINE_COMMENT = 159
    WHITESPACE = 160
    STRING_TEXT = 161
    STRING_ESCAPE_TRIGGER = 162
    FULL_STRING_TEXT = 163
    FULL_STRING_ESCAPE_TRIGGER = 164
    TAG_WS = 165
    TAGC_WS = 166
    HOGQLX_TEXT_TEXT = 167
    HOGQLX_TEXT_WS = 168

    channelNames = [ u"DEFAULT_TOKEN_CHANNEL", u"HIDDEN" ]

    modeNames = [ "DEFAULT_MODE", "IN_TEMPLATE_STRING", "IN_FULL_TEMPLATE_STRING", 
                  "HOGQLX_TAG_OPEN", "HOGQLX_TAG_CLOSE", "HOGQLX_TEXT" ]

    literalNames = [ "<INVALID>",
            "'->'", "'*'", "'`'", "'\\'", "':'", "','", "'||'", "'-'", "'$'", 
            "'.'", "'=='", "'>='", "'#'", "'~*'", "'=~*'", "'{'", "'['", 
            "'('", "'<='", "'<'", "'</'", "'!~*'", "'!~'", "'?.'", "'??'", 
            "'%'", "'+'", "'?'", "'\"'", "'f''", "'F''", "'''", "'~'", "'=~'", 
            "'}'", "']'", "')'", "';'", "'/'", "'_'" ]

    symbolicNames = [ "<INVALID>",
            "ALL", "AND", "ANTI", "ANY", "ARRAY", "AS", "ASCENDING", "ASOF", 
            "BETWEEN", "BOTH", "BY", "CASE", "CAST", "CATCH", "COHORT", 
            "COLLATE", "CROSS", "CUBE", "CURRENT", "DATE", "DAY", "DESC", 
            "DESCENDING", "DISTINCT", "ELSE", "END", "EXCEPT", "EXTRACT", 
            "FINAL", "FINALLY", "FIRST", "FN", "FOLLOWING", "FOR", "FROM", 
            "FULL", "FUN", "GROUP", "HAVING", "HOUR", "ID", "IF", "ILIKE", 
            "IN", "INF", "INNER", "INTERSECT", "INTERVAL", "IS", "JOIN", 
            "KEY", "LAST", "LEADING", "LEFT", "LET", "LIKE", "LIMIT", "MINUTE", 
            "MONTH", "NAN_SQL", "NOT", "NULL_SQL", "NULLS", "OFFSET", "ON", 
            "OR", "ORDER", "OUTER", "OVER", "PARTITION", "PRECEDING", "PREWHERE", 
            "QUARTER", "RANGE", "RETURN", "RIGHT", "ROLLUP", "ROW", "ROWS", 
            "SAMPLE", "SECOND", "SELECT", "SEMI", "SETTINGS", "SUBSTRING", 
            "THEN", "THROW", "TIES", "TIMESTAMP", "TO", "TOP", "TOTALS", 
            "TRAILING", "TRIM", "TRUNCATE", "TRY", "UNBOUNDED", "UNION", 
            "USING", "WEEK", "WHEN", "WHERE", "WHILE", "WINDOW", "WITH", 
            "YEAR", "ESCAPE_CHAR_COMMON", "IDENTIFIER", "FLOATING_LITERAL", 
            "OCTAL_LITERAL", "DECIMAL_LITERAL", "HEXADECIMAL_LITERAL", "STRING_LITERAL", 
            "ARROW", "ASTERISK", "BACKQUOTE", "BACKSLASH", "COLON", "COMMA", 
            "CONCAT", "DASH", "DOLLAR", "DOT", "EQ_DOUBLE", "EQ_SINGLE", 
            "GT_EQ", "GT", "HASH", "IREGEX_SINGLE", "IREGEX_DOUBLE", "LBRACE", 
            "LBRACKET", "LPAREN", "LT_EQ", "LT", "LT_SLASH", "NOT_EQ", "NOT_IREGEX", 
            "NOT_REGEX", "NULL_PROPERTY", "NULLISH", "PERCENT", "PLUS", 
            "QUERY", "QUOTE_DOUBLE", "QUOTE_SINGLE_TEMPLATE", "QUOTE_SINGLE_TEMPLATE_FULL", 
            "QUOTE_SINGLE", "REGEX_SINGLE", "REGEX_DOUBLE", "RBRACE", "RBRACKET", 
            "RPAREN", "SEMICOLON", "SLASH", "SLASH_GT", "UNDERSCORE", "MULTI_LINE_COMMENT", 
            "SINGLE_LINE_COMMENT", "WHITESPACE", "STRING_TEXT", "STRING_ESCAPE_TRIGGER", 
            "FULL_STRING_TEXT", "FULL_STRING_ESCAPE_TRIGGER", "TAG_WS", 
            "TAGC_WS", "HOGQLX_TEXT_TEXT", "HOGQLX_TEXT_WS" ]

    ruleNames = [ "ALL", "AND", "ANTI", "ANY", "ARRAY", "AS", "ASCENDING", 
                  "ASOF", "BETWEEN", "BOTH", "BY", "CASE", "CAST", "CATCH", 
                  "COHORT", "COLLATE", "CROSS", "CUBE", "CURRENT", "DATE", 
                  "DAY", "DESC", "DESCENDING", "DISTINCT", "ELSE", "END", 
                  "EXCEPT", "EXTRACT", "FINAL", "FINALLY", "FIRST", "FN", 
                  "FOLLOWING", "FOR", "FROM", "FULL", "FUN", "GROUP", "HAVING", 
                  "HOUR", "ID", "IF", "ILIKE", "IN", "INF", "INNER", "INTERSECT", 
                  "INTERVAL", "IS", "JOIN", "KEY", "LAST", "LEADING", "LEFT", 
                  "LET", "LIKE", "LIMIT", "MINUTE", "MONTH", "NAN_SQL", 
                  "NOT", "NULL_SQL", "NULLS", "OFFSET", "ON", "OR", "ORDER", 
                  "OUTER", "OVER", "PARTITION", "PRECEDING", "PREWHERE", 
                  "QUARTER", "RANGE", "RETURN", "RIGHT", "ROLLUP", "ROW", 
                  "ROWS", "SAMPLE", "SECOND", "SELECT", "SEMI", "SETTINGS", 
                  "SUBSTRING", "THEN", "THROW", "TIES", "TIMESTAMP", "TO", 
                  "TOP", "TOTALS", "TRAILING", "TRIM", "TRUNCATE", "TRY", 
                  "UNBOUNDED", "UNION", "USING", "WEEK", "WHEN", "WHERE", 
                  "WHILE", "WINDOW", "WITH", "YEAR", "ESCAPE_CHAR_COMMON", 
                  "IDENTIFIER", "FLOATING_LITERAL", "OCTAL_LITERAL", "DECIMAL_LITERAL", 
                  "HEXADECIMAL_LITERAL", "STRING_LITERAL", "A", "B", "C", 
                  "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", 
                  "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", 
                  "Z", "LETTER", "OCT_DIGIT", "DEC_DIGIT", "HEX_DIGIT", 
                  "ARROW", "ASTERISK", "BACKQUOTE", "BACKSLASH", "COLON", 
                  "COMMA", "CONCAT", "DASH", "DOLLAR", "DOT", "EQ_DOUBLE", 
                  "EQ_SINGLE", "GT_EQ", "GT", "HASH", "IREGEX_SINGLE", "IREGEX_DOUBLE", 
                  "LBRACE", "LBRACKET", "LPAREN", "LT_EQ", "TAG_LT_SLASH", 
                  "TAG_LT_OPEN", "LT", "LT_SLASH", "NOT_EQ", "NOT_IREGEX", 
                  "NOT_REGEX", "NULL_PROPERTY", "NULLISH", "PERCENT", "PLUS", 
                  "QUERY", "QUOTE_DOUBLE", "QUOTE_SINGLE_TEMPLATE", "QUOTE_SINGLE_TEMPLATE_FULL", 
                  "QUOTE_SINGLE", "REGEX_SINGLE", "REGEX_DOUBLE", "RBRACE", 
                  "RBRACKET", "RPAREN", "SEMICOLON", "SLASH", "SLASH_GT", 
                  "UNDERSCORE", "MULTI_LINE_COMMENT", "SINGLE_LINE_COMMENT", 
                  "WHITESPACE", "STRING_TEXT", "STRING_ESCAPE_TRIGGER", 
                  "STRING_QUOTE_SINGLE", "FULL_STRING_TEXT", "FULL_STRING_ESCAPE_TRIGGER", 
                  "TAG_SELF_CLOSE_GT", "TAG_OPEN_GT", "TAG_IDENT", "TAG_EQ", 
                  "TAG_STRING", "TAG_WS", "TAG_LBRACE", "TAGC_GT", "TAGC_IDENT", 
                  "TAGC_WS", "HOGQLX_TEXT_TEXT", "HOGQLX_TEXT_LBRACE", "HOGQLX_TEXT_LT_SLASH", 
                  "HOGQLX_TEXT_LT", "HOGQLX_TEXT_WS" ]

    grammarFileName = "HogQLLexer.g4"

    def __init__(self, input=None, output:TextIO = sys.stdout):
        super().__init__(input, output)
        self.checkVersion("4.13.2")
        self._interp = LexerATNSimulator(self, self.atn, self.decisionsToDFA, PredictionContextCache())
        self._actions = None
        self._predicates = None



    def _peek_char(self, k: int) -> str:
        """Return the k-th look-ahead as a *single-char string* or '\0' at EOF."""
        c = self._input.LA(k)          # int code point or IntStream.EOF (-1)
        if c < 0 or c > 0x10FFFF:      # EOF or out-of-range → sentinel
            return '\0'
        return chr(c)

    def _skip_ws_and_comments(self, idx: int) -> int:
        """Return the first index ≥ idx that is *not* whitespace / single-line comment."""
        while True:
            ch = self._peek_char(idx)
            if ch.isspace():                 # spaces, newlines, tabs …
                idx += 1
                continue

            # single-line comments
            if ch == '/' and self._peek_char(idx + 1) == '/':     # //
                idx += 2
            elif ch == '-' and self._peek_char(idx + 1) == '-':   # --
                idx += 2
            elif ch == '#':                                       # #
                idx += 1
            else:
                break                                             # no ws / comment
            # consume until EOL / EOF
            while self._peek_char(idx) not in ('\0', '\n', '\r'):
                idx += 1
        return idx

    # ───── opening tag test ─────
    def isOpeningTag(self) -> bool:
        ch1 = self._peek_char(1)
        if not (ch1.isalpha() or ch1 == '_'):
            return False                           # not a tag name start

        # skip tag name
        i = 2
        while True:
            ch = self._peek_char(i)
            if ch.isalnum() or ch in ('_', '-'):
                i += 1
            else:
                break

        ch = self._peek_char(i)

        # immediate delimiter → tag
        if ch in ('>', '/'):
            return True

        # need to look beyond whitespace
        if ch.isspace():
            i = self._skip_ws_and_comments(i + 1)
            ch = self._peek_char(i)
            return ch in ('>', '/') or ch.isalnum() or ch == '_'

        # anything else → not a tag
        return False



    def sempred(self, localctx:RuleContext, ruleIndex:int, predIndex:int):
        if self._predicates is None:
            preds = dict()
            preds[165] = self.TAG_LT_OPEN_sempred
            self._predicates = preds
        pred = self._predicates.get(ruleIndex, None)
        if pred is not None:
            return pred(localctx, predIndex)
        else:
            raise Exception("No registered predicate for:" + str(ruleIndex))

    def TAG_LT_OPEN_sempred(self, localctx:RuleContext, predIndex:int):
            if predIndex == 0:
                return self.isOpeningTag()
         


